package com.lhkk.inventoryvehicle.led

import java.nio.charset.Charset

object TextToHexConverter {

    /**
     * 将字符串按照指定编码转换为16进制字符串。
     * 每个字节转换为两位大写16进制，字节之间不带空格。
     *
     * @param text 要转换的字符串。
     * @param charset 字符编码，例如 Charsets.UTF_8, Charsets.GBK。
     * @return 转换后的16进制字符串。
     */
    fun stringToHexString(text: String, charset: Charset): String {
        val bytes = text.toByteArray(charset) // 1. 将字符串编码为字节数组
        return bytes.joinToString("") { byte -> // 2. 将每个字节转换为两位大写16进制
            String.format("%02X", byte.toInt() and 0xFF)
        }
    }
    fun intToTwoDigitHexString(decimalValue: Int): String {
        // 校验输入范围，确保它能被一个字节表示，这样才能保证是“两位”十六进制
        require(decimalValue in 0..255) {
            "输入值必须在 0 到 255 之间，才能转换为两位十六进制字符串。"
        }

        // 使用 String.format() 进行格式化
        // %02X：
        // %  - 格式说明符的开始
        // 0  - 填充字符，用 '0' 填充
        // 2  - 最小宽度，至少两位
        // X  - 转换为大写十六进制
        return String.format("%02X", decimalValue)
    }
}

